package main

import (
	"fmt"
	"log"

	"github.com/inntu/backend/api/models"
	"github.com/inntu/backend/config"
)

func main() {
	fmt.Println("=== 数据库连接测试 ===")

	// 获取数据库配置
	dbConfig := config.GetDatabaseConfig()
	fmt.Printf("数据库配置: %+v\n", dbConfig)

	// 初始化GORM数据库连接
	if err := config.InitGormDatabase(dbConfig); err != nil {
		log.Fatalf("GORM数据库连接失败: %v", err)
	}
	defer config.CloseGormDatabase()

	fmt.Println("✅ 数据库连接成功!")

	// 测试查询
	fmt.Println("\n=== 测试数据库查询 ===")

	// 获取GORM数据库实例
	db := config.GetGormDB()

	// 测试分类表
	var categoryCount int64
	err := db.Model(&models.Category{}).Count(&categoryCount).Error
	if err != nil {
		log.Printf("查询分类表失败: %v", err)
	} else {
		fmt.Printf("分类表记录数: %d\n", categoryCount)
	}

	// 测试页面表
	var pageCount int64
	err = db.Model(&models.Page{}).Count(&pageCount).Error
	if err != nil {
		log.Printf("查询页面表失败: %v", err)
	} else {
		fmt.Printf("页面表记录数: %d\n", pageCount)
	}

	// 测试项目表
	var itemCount int64
	err = db.Model(&models.Item{}).Count(&itemCount).Error
	if err != nil {
		log.Printf("查询项目表失败: %v", err)
	} else {
		fmt.Printf("项目表记录数: %d\n", itemCount)
	}

	// 测试查询页面及其分类
	fmt.Println("\n=== 查询页面及其分类 ===")
	var pages []models.Page
	err = db.Preload("Categories").Find(&pages).Error
	if err != nil {
		log.Printf("查询页面失败: %v", err)
	} else {
		for _, page := range pages {
			fmt.Printf("页面: %s (%s) - 分类数: %d\n", page.Name, page.Code, len(page.Categories))
			for _, category := range page.Categories {
				fmt.Printf("  - ID: %d, Name: %s\n", category.ID, category.Name)
			}
		}
	}

	// 测试查询分类及其项目
	fmt.Println("\n=== 查询分类及其项目 ===")
	var categories []models.Category
	err = db.Preload("Items").Limit(3).Find(&categories).Error
	if err != nil {
		log.Printf("查询分类失败: %v", err)
	} else {
		for _, category := range categories {
			fmt.Printf("分类: %s - 项目数: %d\n", category.Name, len(category.Items))
			for _, item := range category.Items {
				fmt.Printf("  - ID: %d, Name: %s\n", item.ID, item.Name)
			}
		}
	}

	fmt.Println("\n✅ 数据库测试完成!")
}
